﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Levfier.GUI.EditorControls
{
    /// <summary>
    /// ルートチェックを行う
    /// </summary>
    public interface IRouteCheckable
    {
        /// <summary>
        /// ルートをチェックする
        /// </summary>
        /// <exception cref="RouteLoopException">ループが発生した場合に発生する</exception>
        /// <returns>
        /// true : 出力まで可能
        /// false : 出力まで不可能
        /// </returns>
        int CheckRoute();

        /// <summary>
        /// ルートチェックを初期化する
        /// </summary>
        void InitRouteCheck();

        /// <summary>
        /// 通過した回数
        /// </summary>
        int PassedThroughCount { get; set; }
    }
}
